﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ProgramacionRedes {
    public partial class FrmEstados : Form {
        Cliente cliente;
        string amigo;

        public FrmEstados(Cliente cliente, string amigo) {
            InitializeComponent();
            this.cliente = cliente;
            this.amigo = amigo;

            CargarEstados();
        }

        private void CargarEstados() {
            List<int> id_estados = cliente.ObtenerEstados(amigo);
            foreach (int id in id_estados) {
                string texto = cliente.ObtenerTextoEstado(amigo, id);
                Estado e = new Estado(id, texto, amigo);
                lbx_Estados.Items.Add(e);
            }
        }

        private void lbx_Estados_SelectedIndexChanged(object sender, EventArgs e) {
            lbx_Comentarios.Items.Clear();
            Estado eu = (Estado)lbx_Estados.Items[lbx_Estados.SelectedIndex];
            List<int> id_comentarios = cliente.ObtenerComentariosEstado(amigo, eu.Id);
            foreach (int id in id_comentarios) {
                string texto = cliente.ObtenerTextoComentario(amigo, eu.Id, id);
                string usuario = cliente.ObtenerUsuarioQueComenta(amigo, eu.Id, id);
                Comentario c = new Comentario(id, texto, amigo, eu.Id, usuario);
                lbx_Comentarios.Items.Add(c);
            }
        }

        private void btn_AgregarComentario_Click(object sender, EventArgs e) {
            if (lbx_Estados.SelectedIndex < 0) {
                MessageBox.Show("Seleccione el estado que quiere comentar");
            } else {
                Estado estado = (Estado)lbx_Estados.Items[lbx_Estados.SelectedIndex];
                try {
                    cliente.ComentarEstado(amigo, estado.Id, txt_Comentario.Text);
                    lbx_Estados_SelectedIndexChanged(this, null);
                } catch (Exception exc) {
                    MessageBox.Show(exc.Message);
                }
            }

        }
    }
}
